package com.ht.config.minio.service;

import io.minio.errors.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

/**
 * @author hejialun
 * @ClassName MinioService
 * @description: TODO（minio文件操作service）
 * @Date: 2024/6/5 14:47
 */
public interface MinioService {

    /**
     * 上传文件
     *
     * @param file
     * @return
     */
    String uploadFile(MultipartFile file)  throws Exception;


    /**
     * 上传文件-通过文件bytes字节
     * @param bytes：文件byte字节
     * @param fileName：文件原名
     * @return
     * @throws Exception
     */
    String uploadFile(byte[] bytes,String fileName)  throws Exception;


    /**
     *
     * @param inputStream:文件输入流
     * @param objectSize:字节长度
     * @param fileName:文件原名
     * @return
     * @throws Exception
     */
    String uploadFile(InputStream  inputStream,long objectSize,String fileName)  throws Exception;


    /**
     * 上传文件-通过文件bytes字节的并指定path
     * @param bytes：文件byte字节
     * @param path：指定存放路径
     * @return
     * @throws Exception
     */
    String uploadFileToPath(byte[] bytes,String path)  throws Exception;




    /**
     * 下载文件
     * @param filePath：文件路径
     * @return
     */
    InputStream downloadFile(String filePath)  throws Exception;


    /**
     * 清空文件
     * @return
     */
    void clearFile()  throws Exception;

    /**
     * 文件转pdf
     * @param filePath
     */
    Boolean fileToPdf(String filePath);

    /**
     * 复制指定文件
     * @param filePath
     */
     String copyFile(String filePath) throws Exception;

     //删除文件
    void delByFile(String filePath)  throws Exception;

}
